#pragma once

#include <base.h>

typedef struct {
	uint64_t sp;
	uint64_t bp;
} stackemu_context_t;

void stackemu_construct(stackemu_context_t *ctx, uint64_t stack_top);
void stackemu_push(stackemu_context_t *ctx, uint64_t value);
uint64_t stackemu_pop(stackemu_context_t *ctx);
void stackemu_storebp(stackemu_context_t *ctx);
void stackemu_restorebp(stackemu_context_t *ctx);
void *stackemu_alloc(stackemu_context_t *ctx, uint64_t size);